package com.zmn.plat.persistence.interfaces.whitelist;

import com.zmn.plat.model.entity.whitelist.Whitelist;
import com.zmn.plat.model.entity.whitelist.query.WhitelistQuery;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 描述: 白名单数据库访问类
 *
 * @author wangjie
 * @since 2017-08-01
 **/
public interface WhitelistDao {

    /**
     * 描述: 根据白名单id 查询数据
     *
     * @param whitelistId   白名单id
     * @param whitelistType 白名单类型
     * @return com.zmn.plat.model.entity.whitelist.Whitelist 白名单
     **/
    Whitelist findByIdAndType(@Param(value = "whitelistId") Integer whitelistId, @Param(value = "whitelistType") Integer whitelistType);

    /**
     * 描述: 根据条件查询白名单数据 分页
     *
     * @param query 查询条件
     * @return java.util.List<com.zmn.plat.model.entity.whitelist.Whitelist>
     **/
    List<Whitelist> listPageByQuery(WhitelistQuery query);

    /**
     * 描述: 根据条件查询白名单数据 不分页
     *
     * @param query 查询条件
     * @return java.util.List<com.zmn.plat.model.entity.whitelist.Whitelist>
     **/
    List<Whitelist> listByQuery(WhitelistQuery query);

    /**
     * 描述: 根据白名单内容查询数据
     *
     * @param whiteNum 白名单内容
     * @return java.util.List<com.zmn.plat.model.entity.whitelist.Whitelist>
     * @author wangjie
     * @since 2019/8/2
     **/
    List<Whitelist> listByWhiteNum(@Param(value = "whiteNum") List<String> whiteNum);

    /**
     * 描述: 根据条件查询白名单数据条数
     *
     * @param query 查询条件
     * @return java.util.List<com.zmn.plat.model.entity.whitelist.Whitelist>
     **/
    Integer countByQuery(WhitelistQuery query);

    /**
     * 描述: 新增白名单
     *
     * @param whitelist 白名单
     **/
    void insertWhitelist(Whitelist whitelist);

    /**
     * 描述: 删除白名单数据
     *
     * @param whitelistId   白名单id
     * @param whitelistType 白名单类型
     **/
    void deleteWhitelistByIdAndType(@Param(value = "whitelistId") Integer whitelistId, @Param(value = "whitelistType") Integer whitelistType);
}
